package busterminal.persistence.memory;

import busterminal.entity.StoppingPoint;
import busterminal.persistence.StoppingPointDAO;
import java.util.HashMap;
import java.util.Map;

/**
 * Реализация интерфейса Data Access Object для остановочного пункта для работы с коллекцией
 */
class MemoryStoppingPointDAO extends AbstractMemoryDAO<StoppingPoint> implements StoppingPointDAO {

    /**
     * Коллекция, содержащая все остановочные пункты
     */
    private static Map<Integer, StoppingPoint> dataSource = new HashMap<Integer, StoppingPoint>();
    /**
     * Идентификатор пункта расписания
     */
    private static Integer counter = 1;

    /**
     * Конструктор по умолчанию
     */
    public MemoryStoppingPointDAO() {
    }

    /**
     * Получить коллекцию, содержащую все остановочные пункты
     * @return коллекция
     */
    @Override
    protected Map<Integer, StoppingPoint> getDataSource() {
        return dataSource;
    }

    /**
     * Получить идентификатор остановочного пункта и увеличить его на единицу
     * @return идентификатор
     */
    @Override
    protected Integer getAndIncreaseCounter() {
        return counter++;
    }

    /**
     * Найти остановочный пункт по названию
     * @param name название остановочного пункта
     * @return ссылка на найденный остановочный пункт
     */
    @Override
    public StoppingPoint findByName(String name) {
        for (StoppingPoint stoppingPoint : dataSource.values()) {
            if (stoppingPoint.getStoppingPointName().equals(name)) {
                return stoppingPoint;
            }
        }
        return null;
    }
}
